Problem 1 |
Repeat the problem in Autoassociation > Rose to remove the noise from a shape. Create a new project, select Convolutional Neural Network, General Purpose and Simulated Annealing in the new project dialog. Also check the options to generate the files BuildTrainSet.lab and BuildValidSet.lab. The project name must be ConvRose. Repita el problema en Autoassociation > Rose para remover el ruido de una silueta. Cree un nuevo proyecto, seleccione Convolutional Neural Network, General Purpose y Simulated Annealing en el diálogo de nuevo proyecto. También seleccione las opciones para generar los archivos BuildTrainSet.lab y BuildValidSet.lab. El nombre del proyecto debe ser ConvRose. |
Step A |
Edit the BuildTrainSet.lab file to build an appropriate training set for learning of the rose r = cos(3θ) using a CNN for auto-association. Use 2000 training cases and 64 inputs. The input training set must include noisy roses and the target must include clean roses as shown in the previous figure. The training set must include the same phase in eight different training cases. Edite el archivo BuildTrainSet.lab para construir un conjunto de datos para aprender la rosa r = cos(3θ) usando una CNN para auto-asociación. Use 2000 casos de entrenamiento y 64 entradas. La entrada del conjunto de datos de entrenamiento debe incluir rosas con ruido y la meta debe incluir rosas sin ruido como se muestra en la figura anterior. El conjunto de datos de entrenamiento debe incluir la misma fase en ocho diferentes casos de entrenamiento. |
ConvRose\BuildTrainSet.lab |
int numCases = 2000; int numInputs = 64; double deltaInput = (2.0*3.1416)/numInputs; double delta = (2.0*3.1416)/(numCases-1); int i; int j; double phase = 0.0; //_______________________________________ 1. Training Set Target Matrix trainSetTarget ; trainSetTarget .Create(numCases, numInputs); for(i=0; i<numCases; i++) { phase = i*delta; for (j=0; j<numInputs; j++) { trainSetTarget [i][j] = (sin(3*j*deltaInput + phase)); } } trainSetTarget .Save(); //_______________________________________ 2. Training Set Input Matrix noise; noise.CreateRandom(numCases, numInputs, -1.0, 1.0); Matrix trainSetInput= 0.9*trainSetTarget + 0.1*noise; trainSetInput.Save(); |
Step B |
Edit the BuildValidSet.lab file, then execute the code. Contaminate the target training set with 10% of noise to create the input validation set. The target of the validation set is the same as the target of the training set. Edite el archivo BuildValidSet.lab, entonces ejecute el código. Contamine la salida deseada (meta) de el conjunto de entrenamiento con 10% de ruido para crear la entrada el conjunto de datos de validación. La salida deseada (meta) del conjunto de datos de validación es la misma que la salida deseada (meta) del conjunto de datos de entrenamiento. |
ConvRose\BuildValidSet.lab |
//_______________________________________ 1. Load the training set Matrix trainSetTarget; trainSetTarget.Load(); int numRows = trainSetTarget.GetRowCount(); int numCols= trainSetTarget.GetColCount(); Matrix noise; noise.CreateRandom(numRows, numCols, -1.0, 1.0); //_______________________________________ 2. Validation Set Input Matrix validSetInput = 0.9*trainSetTarget + 0.1*noise; validSetInput.Save(); |
Step C |
Edit the Train.lab file, then execute the code. Train the CNN using Simulated Annealing and the Conjugate Gradient method. Edite el archivo Train.lab, entonces ejecute el código. Entrene la CNN usando Simulated Annealing, y entonces, use el método del Gradiente Conjugado. |
ConvRose\Train.lab |
//_______________________________________ 1. Network setup ConvNet net; net.Create(1, 1, 64, 2); //_______________________________________ 2. Scaling net.SetInRange(-1.0, 1.0); net.SetOutRange(-1.0, 1.0); //_______________________________________ 3. Layer setup net.SetFullLayer(0, 2, 14); // tanh=2, 14 neurons net.SetFullLayer(1, 2, 64); // tanh=2, 14 neurons //_______________________________________ 4. Load and set the training set Tensor trainSetInput; trainSetInput.LoadCsv(64, 1, 1); Tensor trainSetTarget; trainSetTarget.LoadCsv(64, 1, 1); net.SetTrainSet(trainSetInput, trainSetTarget, false); //_______________________________________ 5. Train using simulated annealing net.TrainSimAnneal( 10, //Number of Temperatures 10, //Number Iterations 15, //Initial Temperature 0.001, //Final Temperature true, //Is Cooling Schedule Linear? 4, //Number of Cycles 1.0e-6, //Goal (desired mse) true //Use Singular Value Decomposition ); //_______________________________________ 6. Train using conjugate gradient net.TrainConjGrad(1000,1.0e-10); //_______________________________________ 7. Save the trained network net.Save(); |
Step D |
Edit the CheckTrain.lab file, then execute the code to check the training. (a) Compute the mean squared error for the CNN using the training set. (b) Plot the error for each training case. (c) Save the plot as a vector image (checkTraining.pdf and checkTraining.emf) (d) Show a polar graph of the output to verify that the network has reduced the noise. Edite el archivo CheckTrain.lab, entonces ejecute el código para verificar el entrenamiento. (a) Calcule el error medio cuadrático para la CNN usando el conjunto de datos de entrenamiento. (b) Cree una gráfica del error para cada caso de entrenamiento. (c) Guarde la gráfica como una imagen vectorial (checkTraining.pdf y checkTraining.emf). (d) Muestre una gráfica polar de la salida para verificar que la red ha reducido el ruido. |
ConvRose\CheckTrain.lab |
//_______________________________________ 1. Load the training set Tensor trainSetInput; trainSetInput.LoadCsv(64, 1, 1); Tensor trainSetTarget; trainSetTarget.LoadCsv(64, 1, 1); //_______________________________________ 2. Load the network ConvNet net; net.Load(); //_______________________________________ 3. Run Tensor output; net.Run(trainSetInput, output); double mse = output.ComputeMse(trainSetTarget); //_______________________________________ 4. Relative error Vector error; output.ComputeRelError(trainSetTarget, error); XyChart checkTraining; checkTraining.SetCaption("case", false, "Relative Error", false); checkTraining.AddGraphY(error, "Relative Error", 2, 1, 0, 255, 0); checkTraining.SetLogScale(false, true); checkTraining.SetLimits(0, trainSetTarget.GetCount(), 1.0e-10, 1.0); checkTraining.SetColorMode(2); checkTraining.SaveAndShow(); checkTraining.SavePDF(0.0); checkTraining.SaveEMF(); //_______________________________________ 5. Convert to matrix Matrix out; output.ToMatrix(out); |
Step E |
Edit the Validation.lab file, then execute the code to validate the performance of the network. (a) Compute the mean squared error for the CNN using the validation set. (b) Plot the error for each validation case. (c) Save the plot as a vector image (validation.pdf and validation.emf) (d) Show a polar graph of the output to verify that the network has reduced the noise from the shape. Edite el archivo CheckTrain.lab, entonces ejecute el código para validar el desempeño de la red neuronal. (a) Calcule el error medio cuadrático para la CNN usando el conjunto de datos de validación. (b) Cree una gráfica del error para cada caso de validación. (c) Guarde la gráfica como una imagen vectorial (validation.pdf y validation.emf) (d) Muestre una gráfica polar de la salida para verificar que la red ha reducido el ruido de la silueta. |
ConvRose\Validation.lab |
//_______________________________________ 1. Load the validation set Tensor validSetInput; validSetInput.LoadCsv(64, 1, 1); Tensor trainSetTarget; trainSetTarget.LoadCsv(64, 1, 1); //_______________________________________ 2. Load the network ConvNet net; net.Load(); //_______________________________________ 3. Run Tensor output; net.Run(validSetInput, output); double mse = output.ComputeMse(trainSetTarget); //_______________________________________ 4. Relative error Vector error; output.ComputeRelError(trainSetTarget, error); XyChart validation; validation.SetCaption("case", false, "Relative Error", false); validation.AddGraphY(error, "Relative Error", 2, 1, 0, 255, 0); validation.SetLogScale(false, true); validation.SetLimits(0, trainSetTarget.GetCount(), 1.0e-10, 1.0); validation.SetColorMode(2); validation.SaveAndShow(); validation.SavePDF(0.0); validation.SaveEMF(); //_______________________________________ 5. Convert to matrix Matrix val; output.ToMatrix(val); |